;
define(function() {
	/**
	 * 对象操作组件
	 */
	var MOObjectToolkit = function() {
		return new MOObjectToolkit.init();
	};
	
	var pt = MOObjectToolkit.prototype;
	MOObjectToolkit.init = function(){};
	MOObjectToolkit.init.prototype = pt;
	
	
	/**
     * 判断对象是否为空 
     * @param {Object} e 对象元素
     */
    pt.isEmptyObject = function(source) {
        var temp;
        for(temp in source){
        	return !1;
        }
        return !0;
    };
 
    /**
     * 判断 是否是数组
     * @param {Object} source 源
     */
    pt.isArray = function(source) {
        return '[object Array]' == Object.prototype.toString.call(source);
    };
 
    /**
     * 判断 是否是日期
     * @param {Object} source 源
     */
   pt.isDate = function(source) {
        // return o instanceof Date;
        return {}.toString.call(source) === "[object Date]" && source.toString() !== 'Invalid Date' && !isNaN(source);
    };
 
    /**
     * 判断是否是HTML元素
     * @param {Object} source 源
     */
    pt.isElement = function(source) {
        return !!(source && source.nodeName && source.nodeType == 1);
    };
 
    /**
     * 判断是否是函数类型
     * @param {Object} source 源
     */
    pt.isFunction = function(source) {
        // chrome下,'function' == typeof /a/ 为true.
        return '[object Function]' == Object.prototype.toString.call(source);
    };
 
    /**
     * 判断是否是数字类型
     * @param {Object} source 源
     */
    pt.isNumber = function(source) {
        return '[object Number]' == Object.prototype.toString.call(source) && isFinite(source);
    };
 
    /**
     * 判断是否为对象
     * @param {Object} source 源
     */
    pt.isObject = function(source) {
        return 'function' == typeof source || !!(source && 'object' == typeof source);
    };
 
    /**
     * 判断是否为字符串
     * @param {Object} source 源
     */
    pt.isString = function(source) {
        return '[object String]' == Object.prototype.toString.call(source);
    };
 
    /**
     * 判断是否为布尔类型
     * @param {Object} source 源
     */
    pt.isBoolean = function(source) {
        return typeof source === 'boolean';
    };
    
    /**
     * 是否是整数
     * @param {Object} source 源
     */
    pt.isIntergerNum = function(source){
        return /^-?\d+$/.test(source)&& (source+"").indexOf(".")===-1;
    };
    
    /**
     * 是否是浮点数
     * @param {Object} source 源
     */
    pt.isFloatNum = function(source){
        return /(^[1-9][0-9]*[\.]{0,1}[0-9]*[0-9]$)|(^[0].[0-9]*[0-9]$)|(^[0-9]$)/.test(source);
    };
    
    /**
     * 是否是浮点数字符串
     * @param {Object} source 源
     */
    pt.isFloatStr = function(source){
        return /(^[1-9][0-9]*[\.]{0,1}[0-9]*[0-9]$)|(^[0].[0-9]*[0-9]$)|(^[0-9]$)/.test(source) && (source+"").indexOf(".")!==-1;
    };
    
    /**
     * 是否是Email
     * @param {Object} source 源
     */
    pt.isEmail = function(source){
        return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(source);
    };
    
    /**
     * 是否是身份证号
     * @param {Object} source 源
     */
    pt.isIDcardNum = function(source){
        return /(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$)/.test(source);
    };
    /**
     * 是否是GUID全球唯一标识符 
     * @param {Object} source 源
     */
    pt.isGUID = function(source){
        return /^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}$/.test(source);
    };
    
    /**
     * 是否是中文
     * @param {Object} source 源
     */
    pt.isChText = function(source){
        return /^[\u4e00-\u9fa5],{0,}$/.test(source);
    };
	
	mofum.extend(MOObjectToolkit, Object);
	return MOObjectToolkit;
});